From a7e2a9d8d3268c851aa1c22da2cbf22ab380e12e Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 7 Jan 2016 16:10:10 -0500 Subject: [PATCH] Don't interpolate between keywords Transitioning between linear gradients like linear-gradient(to top, yellow, green) and linear-gradient(to left, yellow, green) was yielding nonsensical results, with the gradient line jumping around wildly. Fix this by falling back to stupid image interpolation for these cases. --- gtk/gtkcssimagelinear.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gtk/gtkcssimagelinear.c b/gtk/gtkcssimagelinear.c index 093a308448..492d04a69d 100644 --- a/gtk/gtkcssimagelinear.c +++ b/gtk/gtkcssimagelinear.c @@ -492,6 +492,10 @@ gtk_css_image_linear_transition (GtkCssImage *start_image, result = g_object_new (GTK_TYPE_CSS_IMAGE_LINEAR, NULL); result->repeating = start->repeating; + if (_gtk_css_number_value_get_unit (start->angle) == GTK_CSS_NUMBER || + _gtk_css_number_value_get_unit (end->angle) == GTK_CSS_NUMBER) + goto fail; + result->angle = _gtk_css_value_transition (start->angle, end->angle, property_id, progress); if (result->angle == NULL) goto fail; -- 2.30.2